<?php

namespace App\Models\Orders;

use App\Models\BaseModel;
use App\Models\TaggingConfig;

/**
 * 用户的信息 + 代理的关系信息 + 一些信息
 */
class OrdersUserModel extends BaseModel
{
    /**
     * 与模型关联的数据表。
     *
     * @var string
     */
    protected $table = 'orders_user';

    /**
     * 可以被批量赋值的属性。
     *
     * @var array
     */
    protected $fillable = array(
        'xh_member_id',
        'is_api_number',
        'orderno',
        'dist_orderno',
        'dist_id',
        'dist_name',
        'contact_phone',
        'contact_name',
        'pay_name',
        'pay_phone',
        'pay_identity',
        'post_province',
        'post_city',
        'post_area',
        'post_address',
        'author_id',
        'author_name',
        'author_commission',
        'sell_name',
        'source_type',
        'source',
        'shop_id',
        'shop_str',
        'pay_money',
        'orders_id',
        'orders_id_one',
        'created_at',
        'remark',
        'tagging',
        'sku_number',
        'sku_area',
        'package_name'
    );

    // public $timestamps = false;

    public function aliasRable($alias)
    {
        return $this->setTable($alias);
    }

    /**
     * 查询数据需要过滤掉的属性。
     *
     * @var array
     */

    protected $hidden = array(
        'updated_at'
    );

    //返回关键字段
    public function getTableField()
    {
        return $this->fillable;
    }

    protected function serializeDate(\DateTimeInterface $date)
    {
        return $date->format('Y-m-d H:i:s');
    }

    /**
     * 建表语句
     */
    protected function buildTable($name = '')
    {
        $tablename = $this->table;
        if (!empty($name)) {
            $tablename = $name;
        }
        $table = "CREATE TABLE IF NOT EXISTS  $tablename (
            `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
            `orderno` varchar(255) DEFAULT '' COMMENT '本系统订单号',
            `dist_orderno` varchar(255) DEFAULT '' COMMENT '下游单号',
            `dist_id` int(11) DEFAULT 0 COMMENT '下游id',
            `dist_name` varchar(255) DEFAULT '' COMMENT '下游名称',
            `contact_phone` varchar(100) DEFAULT '' COMMENT '联系人手机号',
            `contact_name` varchar(100) DEFAULT '' COMMENT '联系人名称',
            `pay_name` varchar(100) DEFAULT '' COMMENT '开卡人姓名',
            `pay_phone` varchar(100) DEFAULT '' COMMENT '开卡人联系方式',
            `pay_identity` varchar(100) DEFAULT '' COMMENT '身份证号',
            `post_province` varchar(100) DEFAULT '' COMMENT '发货省',
            `post_city` varchar(100) DEFAULT '' COMMENT '发货市',
            `post_area` varchar(100) DEFAULT '' COMMENT '发货区',
            `post_address` varchar(100) DEFAULT '' COMMENT '详细地址',
            `author_id` varchar(255) DEFAULT NULL COMMENT '达人id',
            `author_name` varchar(255) DEFAULT NULL COMMENT '达人名称',
            `sell_name` varchar(255) DEFAULT '' COMMENT '感叹号过来的代理/销售员',
            `source_type` varchar(255) DEFAULT '0' COMMENT '来源名称',
            `source` tinyint(2) DEFAULT '0' COMMENT '来源',
            `orders_id` int(11) DEFAULT '0' COMMENT 'orders_info 最后一条的数据',
            `orders_id_one` int(11) DEFAULT '0' COMMENT 'orders_info 第一条的数据',
            `pay_money` int(11) DEFAULT 0 COMMENT '支付金额',
            `shop_id` int(11) DEFAULT '0' COMMENT '店铺id',
            `shop_str` varchar(255) DEFAULT '0' COMMENT '店铺字符串 使用逗号隔开',
            `age` varchar(255) DEFAULT '0' COMMENT '年龄',
            `time` varchar(255) DEFAULT '0' COMMENT '下单的时间的小时',
            `sex` varchar(255) DEFAULT '0' COMMENT '性别',
            `created_at` datetime DEFAULT NULL COMMENT '创建时间',
            PRIMARY KEY (`id`),
            KEY `orderno` (`orderno`),
            KEY `dist_orderno` (`dist_orderno`),
            KEY `pay_phone` (`pay_phone`),
            KEY `author_id` (`author_id`),
            KEY `shop_str` (`shop_str`),
            KEY `shop_id` (`shop_id`),
            KEY `sell_name` (`sell_name`),
            KEY `source` (`source`)
            ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 COMMENT='订单表';";
        return $table;
    }

    /**
     * 插入新的字段
     */
    protected function bulidField()
    {
        $array = [
            'updated_at' => "datetime DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间'",
            'is_trun' => "char(1) DEFAULT 0 COMMENT '是否转单'",
            'remark' => "varchar(500) DEFAULT NULL COMMENT '订单备注'",
            'tagging' => "tinyint(1) DEFAULT NULL COMMENT '标旗'",
        ];
        return $array;
        //例子
        // $array = [
        //     'product_code' => "varchar(100) DEFAULT NULL COMMENT '产品信息'",
        //     'goods_code' => "varchar(100) DEFAULT NULL COMMENT '商品编码'",
        //     'is_edit' => "varchar(100) DEFAULT 0 COMMENT '是否修改'",
        //     'shop_name_str' => "varchar(255) DEFAULT '0' COMMENT '供应商名称字符串'",
        //     'shop_id_str' => "varchar(255) DEFAULT '0' COMMENT '供应商id字符串'",
        //     'sup_goods_name' => "varchar(255) DEFAULT '0' COMMENT '上游商品名称'",
        //     'sup_goods_id' => "int(11) DEFAULT null COMMENT '上游商品id'",
        //     'sup_goods_id_str' => "varchar(255) DEFAULT '0' COMMENT '上游商品id字符串'",
        //     'sup_shop_id' => "int(11) DEFAULT null COMMENT '分销商id'",
        //     'sup_shop_name' => "varchar(255) DEFAULT '0' COMMENT '分销商名称'",
        //     'shop_name' => "varchar(255) DEFAULT '0' COMMENT '店铺名称'",
        //     'source_type' => "varchar(255) DEFAULT '0' COMMENT '来源名称'",
        //     'author_id' => "varchar(255) DEFAULT null COMMENT '达人id'",
        //     'author_name' => "varchar(255) DEFAULT null COMMENT '达人名称'",
        //     'card_num' => "varchar(255) DEFAULT null COMMENT '卡号'",
        //     'province' => "varchar(100) DEFAULT '' COMMENT '号码归属地省'",
        //     'city' => "varchar(100) DEFAULT '' COMMENT '号码归属地市'",
        //     'sell_name' => "varchar(255) DEFAULT null COMMENT '感叹号过来的代理'",
        //     // 'is_sign' => "varchar(100) DEFAULT '0' COMMENT '标记 0未标记 1:已标记 2:取消标记'",
        //     'imei' => "varchar(100) DEFAULT null COMMENT '串号'",
        //     'pay_money' => "int(11) DEFAULT null COMMENT '支付金额'",
        //     'is_trun' => "char(1) DEFAULT 0 COMMENT '是否转单 0 不是转单 1 转单'",
        // ];
        // return $array;
    }

    // 关联 role表
    public function userToRole($role)
    {
        // return $this->hasMany(Role::className(),);
    }

    public function hasOrders()
    {
        // one_orders_id orders_id
        // id => orders_user_id
        return $this->hasMany("App\Models\Orders\OrdersModel", 'orders_user_id', 'id');
    }
    //订单的状态
    // 提交中 审核中 已发货 已签收 已激活 异常单  失败单
    public function orderStatus()
    {
        return config('card.ordersStatus');
    }

    public function getOrderStatusDesc($key)
    {
        $allStatus = $this->orderStatus();
        return $allStatus[$key];
    }

    public function getSourceType()
    {
        return config('card.sourceType');
    }

    public function getOrderSource($key)
    {
        $allStatus = $this->getSourceType();
        return $allStatus[$key];
    }

    public function getTaggingItem($id)
    {
        $tagging = $this->getTagging();
        if (empty($id)) {
            return $tagging[0];
        }
        foreach ($tagging as $item) {
            if ($item['id'] == $id) {
                return $item;
            }
        }
        return [];
    }

    public function getTagging()
    {

        $ModelTagging = new TaggingConfig();
        $rows = [];
        foreach ($ModelTagging->select(['kk', 'name', 'color', 'remark'])->orderBy('kk', 'asc')->cursor() as $row) {
            $row['id'] = $row['kk'];
            $rows[$row['kk']] = $row;
        }
        return $rows;
//        return [
//            [
//                'id' => 0,
//                'color' => '#e4dfd7',
//                'name' => '无',
//            ],
//            [
//                'id' => 1,
//                'color' => '#130c0e',
//                'name' => '黑',
//            ],
//            [
//                'id' => 2,
//                'color' => '#ee3f4d',
//                'name' => '红',
//            ],
//            [
//                'id' => 3,
//                'color' => '#ebb10d',
//                'name' => '黄',
//            ],
//            [
//                'id' => 4,
//                'color' => '#229453',
//                'name' => '绿',
//            ],
//            [
//                'id' => 5,
//                'color' => '#2775b6',
//                'name' => '蓝',
//            ],
//            [
//                'id' => 6,
//                'color' => '#8076a3',
//                'name' => '紫',
//            ],
//            [
//                'id' => 7,
//                'color' => '#03ecde',
//                'name' => '青',
//            ],
//        ];
    }

    public function getIsEdit()
    {
        /**  1+ 用户信息修改 2+ 商品信息修改 3+ 产品信息修改
         */
    }

//    与订单一对一
    public function orders()
    {
        return $this->hasOne('App\Models\Orders\OrdersModel', 'orders_user_id', 'id');
    }
}
